uesEffect 其實不是 functional component 的 API
useEffect hook 最主要的作用在於處理與畫面無關的 side effect,並非是 functional component 的生命週期API,因為這個處理副作用的 hook 不論呼叫幾次都不應該影響的資料流或是程式邏輯。
useEffect 的 dependencies 機制設計的目的
useEffect 的 dependencies 機制設計的目的是為了讓 React 能夠正確地同步資料,並且優化效能。
在 dependencies 中傳入 side effect 函式所需要依賴的資料,react 就會在每一個渲染時使用
object.is
來比較前後兩次的 dependencies 依賴的原始資料否有變化,若有變化就會執行 side effect 函式,沒有就可以跳過這次 side effect 的執行。
dependencies 並非是為了控制 side effect 執行的時機或商業邏輯,而是為了讓 react 可以正確地同步化資料,所以應誠實地填寫有依賴到的原始資料到 dependencies 中。